#ifndef __SCENEPOURSUITE_H__
#define __SCENEPOURSUITE_H__

#pragma once

#include "DeferredShading.h"
#include "MLight.h"

class COgreEngine;
class CSimpleFrameListener;

class CScenePoursuite : public CSceneBase
{
	typedef std::vector<CSimpleFrameListener *> TGrassListener;
//Methods
public:
	CScenePoursuite(COgreEngine &Creator, const String & Name, const int pos);
	virtual ~CScenePoursuite(void);

	void Create(TCreatorEntities const &CreatorEntities, TCreatorNodes const &CreatorNodes, TCreatorLights const &CreatorLights, ENetConfig IsClient = e_NCNone, Vector3 &CameraStartPos = Vector3(200.0f, 150.0f, 200.0f));

	bool frameStarted(const FrameEvent& evt);
	void Attach(void);
	
	void deleteEvents(void);
	void processEvents(void);

	void notifyMaterialRender(uint32 pass_id, MaterialPtr &mat);
	void notifyMaterialSetup(uint32 pass_id, MaterialPtr &mat);

//Variables
public:
	DeferredShadingSystem *m_pSystem;

	TGrassListener m_GrassListener;

	Bone * m_pLight1Bone;
	Bone * m_pCameraTremblement;
	Bone * m_pCamTrav;

	Real m_LastStart;
	AnimationState * m_CamState;
	bool m_IsCamMoving;
	Real m_CamMoveDuration;

	std::vector<Vector3> m_Positions;
	Real m_TimeToIdle;
	Vector3 m_DistStep;
};

#endif //__SCENEPOURSUITE_H__
